<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 作用域链： 程序在使用变量的查找过程（就近原则）

      //   1、局部变量和全局变量同时存在的时候，先使用局部变量,是因为局部变量离得近，如果不加var，也是一样
      var a = 123;
      function fun() {
        a = 3;
        console.log(a); //3
      }
      fun();

      //   2、如果是函数嵌套，现在自己作用域的变量，如果自己作用域的变量没有，再找父元素作用域的变量，如果父元素也没有，再找全局变量（直到找到window都没有，就会报错）
      //   function f1() {
      //     // var a = 11;
      //     function f2() {
      //       //   var a = 22;
      //       console.log(a);
      //     }
      //     f2();
      //   }
      //   f1();

      //   var a = 00;
      //   function f1() {
      //     a = 11;
      //     function f2() {
      //       //   var a = 22;
      //       console.log(a);
      //     }
      //     f2();
      //   }
      //   f1();

      //   var a = 2;
      //   function test() {
      //     var a = 1;
      //     console.log(a);
      //   }
      //   test();

      //   function fn() {
      //     function fn2() {
      //       var a = 10;
      //       console.log(a);
      //     }
      //     fn2();
      //   }
      //   fn();

      //   作用域链，是在自己的作用域找离自己最近的变量（就近原则）
      //   var a = 0;
      //   function fn1() {
      //     var a = 1;
      //     function fn2() {
      //       var a = 2;
      //       function fn3() {
      //         var a = 3;
      //         console.log(a);
      //       }
      //       fn3();
      //     }
      //     fn2();
      //   }
      //   fn1();
    </script>
  </body>
</html>
